﻿// Necroz project team © <2015> <ArchLord2EMU>
// 
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
// 
// Author:Sagara
// Date:2015-09-26-13:23

using AL2Game.Configs;
using AL2Game.Interfaces;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Tool.hbm2ddl;

namespace AL2Game.Services.Database
{
    public class DatabaseService : IDatabaseService
    {
        private static ISessionFactory _DBFactory;

        public void Initilize()
        {
            var config = Fluently.Configure().Database(
                MySQLConfiguration.Standard.ConnectionString(
                    cs =>
                        cs.Is($"Server={DatabaseCfg.Default.Host};Database={DatabaseCfg.Default.Database};User={DatabaseCfg.Default.Username};Password={DatabaseCfg.Default.Password};CharSet=utf8"))
                ).Mappings(m => m.FluentMappings.AddFromAssemblyOf<DatabaseService>());

            var export = new SchemaUpdate(config.BuildConfiguration());

            export.Execute(false, true);

            _DBFactory = config.BuildSessionFactory();

        }

        public void Release()
        {

        }

        public ISessionFactory GetFactory()
        {
            return _DBFactory;
        }
    }
}